Compactando / descompactando arquivos simultaneamente [Melhorado]
Publicado por Sandro Marcell 18/07/2007
[ Hits: 6.628 ]
Homepage: http://sanmarcell.wordpress.com
Este script compacta/descompacta arquivos simultaneamente, sem necessidade de parâmetros extras.
Ex.: nome_script arq.txt arq.pdf arq.gz arq.tar.gz
Os arquivos arq.txt e arq.pdf serão compactados; já os arquivs arq.gz e arq.tar.gz serão descompactados.
Está é a versão Shell Bash de um script Tcl que postei aqui no VOL.
Falou!!!
#!/bin/bash
#
# Compacte/descompacte arquivos simultaneamente.
# (Versão Shell Bash)
#
# Autor: Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Uso: nome_script arquivo1 [arquivoN]
#
# Obs.:
# É possível o uso do metacaractere (*)
# São necessários os programas: tar, gzip e bzip2
# Realçando saída do comando 'echo':
Echo () { echo -e "\e[1m$*\e[m" ; }
# Checando parâmetros:
[ -z $BASH_ARGC ] && Echo "Uso: $(basename $0) arquivo1 [arquivoN]" && exit
# Simples avisos:
Aguarde () { Echo "Descompactando..." ; sleep 1 ; }
Aguarde2 () { Echo "Compactando..." ; sleep 1 ; }
# Arquivo de log:
LOG=/tmp/$(basename $0)-$USER.log
# Função que testa código de retorno:
Testando () {
[ $? == 0 ] && Echo "Arquivo descompactado!" \
|| Echo "-> Erro! Mais detalhes em $LOG"
}
# Início do loop:
for A ; do
# Testes condicionais:
[ ! -e $A ] && Echo "-> Arquivo não encontrado." && continue
[ ! -O $A ] && Echo "-> Acesso negado." && continue
# Compactar ou descompactar?
case $A in
# Descompactando...
*.tar.gz | *.tgz)
Aguarde
tar -zxf $A 2>> $LOG
Testando $?
;;
*.gz)
Aguarde
gunzip $A 2>> $LOG
Testando $?
;;
*.tar.bz2 | *.tbz)
Aguarde
tar -jxf $A 2>> $LOG
Testando $?
;;
*.bz2)
Aguarde
bunzip2 $A 2>> $LOG
Testando $?
;;
*)
# Compactando...
[ -d $A ] && {
Aguarde2
tar -czf $A.tar.gz $A 2>> $LOG
[ $? == 0 ] && Echo "Diretório compactado!" \
|| Echo "-> Erro! Mais detalhes em $LOG"
} || {
Aguarde2
gzip -f9 $A 2>> $LOG
[ $? == 0 ] && Echo "Arquivo compactado!" \
|| Echo "-> Erro! Mais detalhes em $LOG"
}
;;
esac
done
#Fim
Mostrar conifguração da placa de rede
Compartilhamento de internet 3g para uma rede domésctica
Convertendo man pages em PDFs (Versão CShell)
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Opções secretas em tema do Cinnamon
Como mapear unidade de rede no Linux
Como quebrar senha usando john the ripper
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (1)
Alguém já testou o novo COSMIC Desktop? O que achou? (4)
Não consigo instalar distro antiga no virtualbox nem direto no hd (29)
queria saber como posso alterar a frequencia do meu ryzen 2300u pro (3)









